// RUN: llvm-objdump -p %p/Inputs/hello.obj.macho-arm | FileCheck %s
// RUN: llvm-objdump -p %p/Inputs/hello.exe.macho-arm \
// RUN:     | FileCheck %s -check-prefix=EXE
// RUN: llvm-objdump --macho --private-headers %p/Inputs/thumb.armv7m \
// RUN:     | FileCheck %s -check-prefix=THREAD

CHECK: Mach header
CHECK:       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
CHECK:    MH_MAGIC     ARM         V7  0x00      OBJECT     3        568 SUBSECTIONS_VIA_SYMBOLS
CHECK: Load command 0
CHECK:       cmd LC_SEGMENT
CHECK:   cmdsize 464
CHECK:   segname 
CHECK:    vmaddr 0x00000000
CHECK:    vmsize 0x00000043
CHECK:   fileoff 596
CHECK:  filesize 67
CHECK:   maxprot rwx
CHECK:  initprot rwx
CHECK:    nsects 6
CHECK:     flags (none)
CHECK: Section
CHECK:   sectname __text
CHECK:    segname __TEXT
CHECK:       addr 0x00000000
CHECK:       size 0x00000036
CHECK:     offset 596
CHECK:      align 2^2 (4)
CHECK:     reloff 664
CHECK:     nreloc 5
CHECK:       type S_REGULAR
CHECK: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
CHECK:  reserved1 0
CHECK:  reserved2 0
CHECK: Section
CHECK:   sectname __textcoal_nt
CHECK:    segname __TEXT
CHECK:       addr 0x00000036
CHECK:       size 0x00000000
CHECK:     offset 650
CHECK:      align 2^0 (1)
CHECK:     reloff 0
CHECK:     nreloc 0
CHECK:       type S_COALESCED
CHECK: attributes PURE_INSTRUCTIONS
CHECK:  reserved1 0
CHECK:  reserved2 0
CHECK: Section
CHECK:   sectname __const_coal
CHECK:    segname __TEXT
CHECK:       addr 0x00000036
CHECK:       size 0x00000000
CHECK:     offset 650
CHECK:      align 2^0 (1)
CHECK:     reloff 0
CHECK:     nreloc 0
CHECK:       type S_COALESCED
CHECK: attributes (none)
CHECK:  reserved1 0
CHECK:  reserved2 0
CHECK: Section
CHECK:   sectname __picsymbolstub4
CHECK:    segname __TEXT
CHECK:       addr 0x00000036
CHECK:       size 0x00000000
CHECK:     offset 650
CHECK:      align 2^0 (1)
CHECK:     reloff 0
CHECK:     nreloc 0
CHECK:       type S_SYMBOL_STUBS
CHECK: attributes (none)
CHECK:  reserved1 0 (index into indirect symbol table)
CHECK:  reserved2 16 (size of stubs)
CHECK: Section
CHECK:   sectname __StaticInit
CHECK:    segname __TEXT
CHECK:       addr 0x00000036
CHECK:       size 0x00000000
CHECK:     offset 650
CHECK:      align 2^0 (1)
CHECK:     reloff 0
CHECK:     nreloc 0
CHECK:       type S_REGULAR
CHECK: attributes PURE_INSTRUCTIONS
CHECK:  reserved1 0
CHECK:  reserved2 0
CHECK: Section
CHECK:   sectname __cstring
CHECK:    segname __TEXT
CHECK:       addr 0x00000036
CHECK:       size 0x0000000d
CHECK:     offset 650
CHECK:      align 2^0 (1)
CHECK:     reloff 0
CHECK:     nreloc 0
CHECK:       type S_CSTRING_LITERALS
CHECK: attributes (none)
CHECK:  reserved1 0
CHECK:  reserved2 0
CHECK: Load command 1
CHECK:      cmd LC_SYMTAB
CHECK:  cmdsize 24
CHECK:   symoff 704
CHECK:    nsyms 2
CHECK:   stroff 728
CHECK:  strsize 16
CHECK: Load command 2
CHECK:             cmd LC_DYSYMTAB
CHECK:         cmdsize 80
CHECK:       ilocalsym 0
CHECK:       nlocalsym 0
CHECK:      iextdefsym 0
CHECK:      nextdefsym 1
CHECK:       iundefsym 1
CHECK:       nundefsym 1
CHECK:          tocoff 0
CHECK:            ntoc 0
CHECK:       modtaboff 0
CHECK:         nmodtab 0
CHECK:    extrefsymoff 0
CHECK:     nextrefsyms 0
CHECK:  indirectsymoff 0
CHECK:   nindirectsyms 0
CHECK:       extreloff 0
CHECK:         nextrel 0
CHECK:       locreloff 0
CHECK:         nlocrel 0

EXE: Mach header
EXE:       magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
EXE:    MH_MAGIC     ARM         V7  0x00     EXECUTE    17       1012   NOUNDEFS DYLDLINK TWOLEVEL PIE
EXE: Load command 0
EXE:       cmd LC_SEGMENT
EXE:   cmdsize 56
EXE:   segname __PAGEZERO
EXE:    vmaddr 0x00000000
EXE:    vmsize 0x00004000
EXE:   fileoff 0
EXE:  filesize 0
EXE:   maxprot ---
EXE:  initprot ---
EXE:    nsects 0
EXE:     flags (none)
EXE: Load command 1
EXE:       cmd LC_SEGMENT
EXE:   cmdsize 328
EXE:   segname __TEXT
EXE:    vmaddr 0x00004000
EXE:    vmsize 0x00008000
EXE:   fileoff 0
EXE:  filesize 32768
EXE:   maxprot r-x
EXE:  initprot r-x
EXE:    nsects 4
EXE:     flags (none)
EXE: Section
EXE:   sectname __text
EXE:    segname __TEXT
EXE:       addr 0x0000bf84
EXE:       size 0x00000036
EXE:     offset 32644
EXE:      align 2^2 (4)
EXE:     reloff 0
EXE:     nreloc 0
EXE:       type S_REGULAR
EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
EXE:  reserved1 0
EXE:  reserved2 0
EXE: Section
EXE:   sectname __stub_helper
EXE:    segname __TEXT
EXE:       addr 0x0000bfbc
EXE:       size 0x00000030
EXE:     offset 32700
EXE:      align 2^2 (4)
EXE:     reloff 0
EXE:     nreloc 0
EXE:       type S_REGULAR
EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
EXE:  reserved1 0
EXE:  reserved2 0
EXE: Section
EXE:   sectname __cstring
EXE:    segname __TEXT
EXE:       addr 0x0000bfec
EXE:       size 0x0000000d
EXE:     offset 32748
EXE:      align 2^0 (1)
EXE:     reloff 0
EXE:     nreloc 0
EXE:       type S_CSTRING_LITERALS
EXE: attributes (none)
EXE:  reserved1 0
EXE:  reserved2 0
EXE: Section
EXE:   sectname __symbolstub1
EXE:    segname __TEXT
EXE:       addr 0x0000bffc
EXE:       size 0x00000004
EXE:     offset 32764
EXE:      align 2^2 (4)
EXE:     reloff 0
EXE:     nreloc 0
EXE:       type S_SYMBOL_STUBS
EXE: attributes PURE_INSTRUCTIONS SOME_INSTRUCTIONS
EXE:  reserved1 0 (index into indirect symbol table)
EXE:  reserved2 4 (size of stubs)
EXE: Load command 2
EXE:       cmd LC_SEGMENT
EXE:   cmdsize 192
EXE:   segname __DATA
EXE:    vmaddr 0x0000c000
EXE:    vmsize 0x00004000
EXE:   fileoff 32768
EXE:  filesize 16384
EXE:   maxprot rw-
EXE:  initprot rw-
EXE:    nsects 2
EXE:     flags (none)
EXE: Section
EXE:   sectname __lazy_symbol
EXE:    segname __DATA
EXE:       addr 0x0000c000
EXE:       size 0x00000004
EXE:     offset 32768
EXE:      align 2^2 (4)
EXE:     reloff 0
EXE:     nreloc 0
EXE:       type S_LAZY_SYMBOL_POINTERS
EXE: attributes (none)
EXE:  reserved1 1 (index into indirect symbol table)
EXE:  reserved2 0
EXE: Section
EXE:   sectname __nl_symbol_ptr
EXE:    segname __DATA
EXE:       addr 0x0000c004
EXE:       size 0x00000008
EXE:     offset 32772
EXE:      align 2^2 (4)
EXE:     reloff 0
EXE:     nreloc 0
EXE:       type S_NON_LAZY_SYMBOL_POINTERS
EXE: attributes (none)
EXE:  reserved1 2 (index into indirect symbol table)
EXE:  reserved2 0
EXE: Load command 3
EXE:       cmd LC_SEGMENT
EXE:   cmdsize 56
EXE:   segname __LINKEDIT
EXE:    vmaddr 0x00010000
EXE:    vmsize 0x00004000
EXE:   fileoff 49152
EXE:  filesize 256
EXE:   maxprot r--
EXE:  initprot r--
EXE:    nsects 0
EXE:     flags (none)
EXE: Load command 4
EXE:             cmd LC_DYLD_INFO_ONLY
EXE:         cmdsize 48
EXE:      rebase_off 49152
EXE:     rebase_size 4
EXE:        bind_off 49156
EXE:       bind_size 24
EXE:   weak_bind_off 0
EXE:  weak_bind_size 0
EXE:   lazy_bind_off 49180
EXE:  lazy_bind_size 16
EXE:      export_off 49196
EXE:     export_size 44
EXE: Load command 5
EXE:      cmd LC_SYMTAB
EXE:  cmdsize 24
EXE:   symoff 49264
EXE:    nsyms 5
EXE:   stroff 49340
EXE:  strsize 68
EXE: Load command 6
EXE:             cmd LC_DYSYMTAB
EXE:         cmdsize 80
EXE:       ilocalsym 0
EXE:       nlocalsym 1
EXE:      iextdefsym 1
EXE:      nextdefsym 2
EXE:       iundefsym 3
EXE:       nundefsym 2
EXE:          tocoff 0
EXE:            ntoc 0
EXE:       modtaboff 0
EXE:         nmodtab 0
EXE:    extrefsymoff 0
EXE:     nextrefsyms 0
EXE:  indirectsymoff 49324
EXE:   nindirectsyms 4
EXE:       extreloff 0
EXE:         nextrel 0
EXE:       locreloff 0
EXE:         nlocrel 0
EXE: Load command 7
EXE:           cmd LC_LOAD_DYLINKER
EXE:       cmdsize 28
EXE:          name /usr/lib/dyld (offset 12)
EXE: Load command 8
EXE:      cmd LC_UUID
EXE:  cmdsize 24
EXE:     uuid C2D9351C-1EF1-330B-A2AB-EED6CF7D2C5D
EXE: Load command 9
EXE:      cmd LC_VERSION_MIN_IPHONEOS
EXE:  cmdsize 16
EXE:  version 8.0
EXE:      sdk 8.0
EXE: Load command 10
EXE:       cmd LC_SOURCE_VERSION
EXE:   cmdsize 16
EXE:   version 0.0
EXE: Load command 11
EXE:        cmd LC_MAIN
EXE:    cmdsize 24
EXE:   entryoff 32645
EXE:  stacksize 0
EXE: Load command 12
EXE:          cmd LC_ENCRYPTION_INFO
EXE:      cmdsize 20
EXE:     cryptoff 16384
EXE:    cryptsize 16384
EXE:      cryptid 0
EXE: Load command 13
EXE:           cmd LC_LOAD_DYLIB
EXE:       cmdsize 52
EXE:          name /usr/lib/libSystem.B.dylib (offset 24)
EXE:       current version 1213.0.0
EXE: compatibility version 1.0.0
EXE: Load command 14
EXE:       cmd LC_FUNCTION_STARTS
EXE:   cmdsize 16
EXE:   dataoff 49240
EXE:  datasize 4
EXE: Load command 15
EXE:       cmd LC_DATA_IN_CODE
EXE:   cmdsize 16
EXE:   dataoff 49244
EXE:  datasize 0
EXE: Load command 16
EXE:       cmd LC_DYLIB_CODE_SIGN_DRS
EXE:   cmdsize 16
EXE:   dataoff 49244
EXE:  datasize 20

THREAD: Load command 6
THREAD:         cmd LC_UNIXTHREAD
THREAD:     cmdsize 84
THREAD:      flavor ARM_THREAD_STATE
THREAD:      count ARM_THREAD_STATE_COUNT
THREAD:	    r0  0x00000000 r1     0x00000000 r2  0x00000000 r3  0x00000000
THREAD:	    r4  0x00000000 r5     0x00000000 r6  0x00000000 r7  0x00000000
THREAD:	    r8  0x00000000 r9     0x00000000 r10 0x00000000 r11 0x00000000
THREAD:	    r12 0x00000000 sp     0x00000000 lr  0x00000000 pc  0x00001fff
THREAD:	   cpsr 0x00000000
